Jeu d'instructions CLMUL

Carry-less Multiplication (CLMUL) est une extension du jeu d'instructions x86 utilisé par les microprocesseurs d’Intel et d’AMD qui a été proposé par Intel en mars 2008[1] et mis à disposition dans les processeurs Intel Westmere annoncés au début de 2010. Mathématiquement, l’instruction implémente la multiplication des polynômes sur le corps fini GF(2) où la chaîne de bits représente le polynôme . L’instruction CLMUL permet également une implémentation plus efficace de la multiplication étroitement liée sur des corps finis plus grands GF(2k) que le jeu d’instructions traditionnel[2].

L’une des utilisations de ces instructions est d’améliorer la vitesse des applications effectuant le chiffrement par bloc en Galois/Counter Mode, qui dépend de la multiplication sur le corps fini GF(2k). Une autre application est le calcul rapide des valeurs CRC[3], y compris celles utilisées pour implémenter l’algorithme Deflate de la fenêtre glissante (en) LZ77 dans zlib et pngcrush (en)[4].

ARMv8 dispose également d’une version de CLMUL. SPARC appelle sa version XMULX, pour « XOR multiplication ».

  1. (en-US) « Intel Software Network - Archivé depuis l'original », Intel (consulté le )
  2. (en) Shay Gueron et Michael E. Kounavis, « Intel Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode – Rev 2.02 » [PDF], Intel,
  3. (en-US) « Fast CRC Computation for Generic Polynomials Using PCLMULQDQ »
  4. (en-US) Vlad Krasnov, « Fighting Cancer: The Unexpected Benefit Of Open Sourcing Our Code », CloudFlare, (consulté le )

Developed by StudentB